/*
 *  SPAGL Copyright (C) 2008 Sam Pottinger
 *  This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser 
 *  General Public License as published by the Free Software Foundation; either version 2.1 of the License, or 
 *  (at your option) any later version. This library is distributed in the hope that it will be useful, but 
 *  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
 *  See the GNU Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public License along with this library; if not, 
 *  write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
 */

package spagcore;

/**
 * An interface to standardize the use of slider widgets that can select a number within a range through graphical means
 * @author Sam Pottinger
 */
public interface SpaglCoreSlider extends SpaglCoreWidget, SpaglCoreEventGenerator {
	
	public static final int VERTICAL = 0;
	public static final int HORIZONTAL = 1;
	
	/**
	 * Gets the value that is currently selected by the user
	 * @return The integer (int) value that that widget is currently set to 
	 */
	public int getValue();
	
	/**
	 * Gets the maximum value that this widget can be set to in the current settings
	 * @return The largest possible integer that can be selected in this widget
	 */
	public int getMax();
	
	/**
	 * Gets the minimum value that this widget can be set to in the current settings
	 * @return The smallest possible integer that can be selected in this widget
	 */
	public int getMin();
	
	/**
	 * Gets the orientation of this widget
	 * @return An integer representing if this widget is horizontal or vertical. The implementing class provides these values.
	 */
	public int getOrientation();
	
	/**
	 * Sets the value currently selected in this widget
	 * @param newValue The new integer represented in this object
	 */
	public void setValue(int newValue);
	
	/**
	 * Sets the minimum value available for the user to select in this widget
	 * @param newMin The new smallest value that can be selected in this object
	 */
	public void setMin(int newMin);
	
	/**
	 * Sets the maximum value available for the user to select in this widget
	 * @param newMax The new largest value that can be selected in this object
	 */
	public void setMax(int newMax);

}
